package com.ushine.design.jdk8.default_fun;

/**
 * 一个类实现多个接口，多个接口中有相同的默认方法。
 * 1、方法一：利用super来指定接口的默认方法。
 * 2、方法二：创建自己的默认方法，来覆盖重写接口中的默认方法。
 *
 * @author yls
 */
public class DefaultTest {
    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        //测试default默认方法
        Vehicle car = new Car();
        car.print();

        Bicycle bicycle = new Bicycle();
        bicycle.print();
    }

}

/**
 * 一个类实现多个接口，多个接口中有相同的默认方法。
 * 方法一：利用super来指定接口的默认方法。
 *
 * @author yls
 */
class Car implements Vehicle, FourWheeler {

    /**
     * 由于实现了多个接口，这些接口中有相同的默认方法，利用super来调用指定接口的默认方法
     */
    @Override
    public void print() {
        FourWheeler.super.print();
    }

}

/**
 * 一个类实现多个接口，多个接口中有相同的默认方法。
 * 方法二：创建自己的默认方法，来覆盖重写接口中的默认方法
 *
 * @author yls
 */
class Bicycle implements Vehicle, FourWheeler {
    /**
     * 由于实现了多个接口，这些接口中有相同的默认方法。
     * 方法二：创建自己的默认方法，来覆盖重写接口中的默认方法
     */
    @Override
    public void print() {
        System.out.println("我是一辆自行车。");
    }

}

